package model.dao;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import model.bean.Ambiente;
import model.bean.Dispositivo;
import model.bean.Evento;
import model.interfaces.IAmbiente;

public class AmbienteDAO implements IAmbiente {

	public EntityManager getEntitymanager(){
		EntityManagerFactory factory = null;
		EntityManager manager = null;
		
		try{
			factory = Persistence.createEntityManagerFactory("SmartClassroomPUnit");
			manager = factory.createEntityManager();
		}catch(Exception e){
			System.out.println("Erro : " + e);
		}finally{
			factory.close();
		}
		
		return manager;
	}
	
	@Override
	public void insereDispositivoAmbiente(Dispositivo dispositivo, Ambiente ambiente) {
		EntityManager manager = getEntitymanager();
		try{
			manager.getTransaction().begin();
			System.out.println("Linkando Dispositivo ao Ambiente...");
			ambiente.getDispositivos().add(dispositivo);
			manager.persist(ambiente);
			manager.getTransaction().commit();
		}catch(Exception e){
			System.out.println("Erro : " + e);
		}finally{
			manager.close();
		}
		
	}

	@Override
	public void cadastrarAmbiente(Ambiente ambiente) {
		EntityManager manager = getEntitymanager();
		try{
			manager.getTransaction().begin();
			System.out.println("Cadastrando Ambiente " + ambiente.getNome());
			manager.persist(ambiente);
			manager.getTransaction().commit();
		}catch(Exception e){
			System.out.println("Erro : " + e);
		}finally{
			manager.close();
		}
	}

	@Override
	public void insereEventoAmbiente(Evento evento , Ambiente ambiente) {
		EntityManager manager = getEntitymanager();
		try{
			manager.getTransaction().begin();
			System.out.println("Linkando Evento com Ambiente " + ambiente.getNome());
			ambiente.getEventos().add(evento);
			manager.persist(ambiente);
			manager.getTransaction().commit();
		}catch(Exception e){
			System.out.println("Erro : " + e);
		}finally{
			manager.close();
		}
	}

	@Override
	public String getNomeAmbiente(Ambiente ambiente) {
		return ambiente.getNome();
	}

	@Override
	public int getCapacidadeAmbiente(Ambiente ambiente) {
		return ambiente.getCapacidade();
	}

	
	

}
